package com.bigShen.spring.mybatis;

/**
 * @Author eddy.shen
 * @Date 2018/12/22 12:19
 **/
public class SpringMyBatisMain {

    public static void main(String[] args) {

        /**
         * QA:
         * 1. 挂载点在哪?
         * 2. 配置的scan路径, 是怎么扫描的?
         * 3. mapper bean是怎么被注入到spring容器的?
         *
         * 4. 为什么MapperScan里配置了 basePackages路径，这个包下的mapper在别的
         *  业务类中可以直接使用注解引用， 是怎样加载到Spring 容器的?
         *
         * 5. Spring @Transaction 是怎么起作用的?
         *   org.mybatis.spring.SqlSessionTemplate.SqlSessionInterceptor#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
         *   spring-mybatis, 底层仍旧是mybatis, 只不过每次查询的时候会先判断是否存在事务,
         *     如果不存在事务,则sqlSession直接commit, 之后关闭sqlSession;
         *     如果存在事务,不关闭sqlSession,等当前方法逻辑执行完,一起提交并关闭sqlSession;
         *
         * 6. mybatis && hibernate
         *   mybatis : 可以直接写sql, 复杂的业务逻辑sql性能优化等方面可调控性强, 上手容易;
         *   hibernate : 适合逻辑简单,sql语句不复杂的查询, 上手比mybatis复杂, 可以更注重于业务逻辑层开发;
         *
         *      隔离级别, 事物传播机制,
         */

    }

}
